# simple-web-chat

Quick and easy-to-deploy web chat with many customizable features (it is also compatible with tor and i2p networks)

## Running development versions, alphas and betas

To run an instance of this server you need two things:
- python3 with websockets module installed (for WS-server, backend);
- almost any HTTP server you find on the Internet (php, nginx, apache etc.) (for HTTP-content, frontend);

First, you will have to clone this repository (specifically, the branch you want to run), for example:
```
git clone https://notabug.org/dymik739/simple-chat-server.git --branch v0.1-dev
```

Next, you have to start websocket server as your backend:
```
cd simple-chat-server/WS-server/
python3 main.py
```
You may want to specify port which will be used by this server. You can use `-p <port>` command line option for this or, alternatively, you can create `config.json` file (it is automatically detected by the server if located in the same directory; cli options override file's ones).

After that you have to start HTTP server which should serve the content of HTTP-content folder. I will use php development server as example here:
```
cd simple-chat-server/HTTP-content/
php -S 127.0.0.1:8080
```
This will start web server on port 8080; feel free to specify whatever port you want (also, you can upload these files to your existing server, they should work too (but make sure all the files are in the same directory)).

And that's it! You're now ready to connect: just visit the HTTP server with your browser and enter websocket server address and port - you will be connected to the chat!
P.S.: if something goes wrong, feel free to open new issue and describe it so bugs can be fixed faster and you can get help with your setup.

These instructions are likely to be used for releases as well but may change in the future.

# Contributing

If you encounter a bug (I'm sure there are many), feel free to open new issue and describe what actually happened and what should have happened. That includes typos and any mistakes you find on these pages or in code as well.

Also you can publish your feature request there, but as this is still an early stage of development, many missing features are already pending, for example:
- embedded web server;
- multiple chat rooms;
- adaptive user interface (for desktop and mobile);
- command line interface client
and many more (I can't think of all of them right now).

But I would still like to hear your requests! I may not come up with some great ideas you might have already so it would be cool in any case.
Also, I can implement certain features first based on the requests, so publishing them is surely worth it.

And yes, you can use pull requests to help somehow (I will try to learn how to use them).
